package org.inspiration.dudu.web.service.user;

import org.inspiration.dudu.user.model.dto.UserInfoDTO;
import org.inspiration.dudu.user.model.vo.UserVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 用户外观服务接口，提供用户相关的操作方法。
 */
public interface UserFacadeService {
    /**
     * 查找所有用户。
     * 
     * @return 用户列表
     */
    List<UserVO> findAllUsers();

    /**
     * 根据用户ID查找用户。
     * 
     * @param id 用户ID
     * @return 用户信息
     */
    UserVO getUserById(Long id);

    /**
     * 根据用户令牌查找用户。
     * 
     * @return 用户信息
     */
    UserVO getUserByToken();

    /**
     * 根据用户ID更新用户信息。
     * 
     * @param userInfoDTO 用户信息数据传输对象
     */
    void updateUserById(UserInfoDTO userInfoDTO);

    /**
     * 上传用户头像。
     * 
     * @param id 用户ID
     * @param file 上传的头像文件
     */
    void uploadAvatar(Long id, MultipartFile file);

    Boolean isOnline(Long id);

    List<UserVO> getOnlineUsers(Integer pageNum, Integer pageSize);

    Long onlineUserCount();
}
